import os
import re

# 设置文件夹路径
folder_path = './'  # 修改为你的文件夹路径

# 要替换的 uniqueid 标签的 type 和新值
updates = {
    'title': '新的电影标题1',
    'actor': '新的演员名',
    'director': '新的导演名1',
    'plot': '新的情节描述1',
}

# 要替换的 uniqueid 标签的 type 和对应的新值
uniqueid_updates = {
    'metatube': 'DUGA:shindou99',  # 只替换 type="metatube" 的标签
    # 可以根据需要添加其他 type 和新值
    # 'othertype': 'DUGA:other-1234'
}

def update_nfo(file_path, updates, uniqueid_updates):
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as file:
        content = file.read()

    # 1. 根据 type 动态替换 uniqueid 标签的内容
    for uniqueid_type, new_value in uniqueid_updates.items():
        # 替换指定 type 的 uniqueid 标签的内容
        content = re.sub(rf'<uniqueid type="{uniqueid_type}">.*?</uniqueid>', 
                         f'<uniqueid type="{uniqueid_type}">{new_value}</uniqueid>', 
                         content)

    # 2. 使用正则表达式替换其他标签的内容
    for tag, new_value in updates.items():
        content = re.sub(rf'<{tag}>.*?</{tag}>', f'<{tag}>{new_value}</{tag}>', content, flags=re.DOTALL)

    # 将更新后的内容写回文件
    with open(file_path, 'w', encoding='utf-8') as file:
        file.write(content)

def update_nfo_files_in_folder(folder_path, updates, uniqueid_updates):
    # 使用 os.walk 递归遍历文件夹及其子文件夹
    for root, dirs, files in os.walk(folder_path):
        for filename in files:
            if filename.endswith('.nfo'):  # 只处理 .nfo 文件
                file_path = os.path.join(root, filename)
                update_nfo(file_path, updates, uniqueid_updates)
                print(f"已更新文件: {file_path}")

# 调用函数进行遍历和更新
update_nfo_files_in_folder(folder_path, updates, uniqueid_updates)
